home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / ParseFile.s < prev    next >
Text File  |  1997-06-19  |  13KB  |  845 lines

  1.  
  2. ; Storm C Compiler
  3. ; Twardziel:My/Sources/StormC/Parser/ParseFile.cpp
  4.     mc68020
  5.  
  6.     XREF    _0dt__Prf__T
  7.     XREF    Free__InsertFile__T
  8.     XREF    _0ct__TextItem__TPcs
  9.     XREF    _0dt__Family__T
  10.     XREF    isValid__ValidFile__TPcPc
  11.     XREF    _0dt__Replace__T
  12.     XREF    _0dt__repdat__T
  13.     XREF    _memcpy
  14.     XREF    _strlen
  15.     XREF    _strcmp
  16.     XREF    _strcpy
  17.     XREF    _fwrite
  18.     XREF    _printf
  19.     XREF    _fclose
  20.     XREF    _fopen
  21.     XREF    _fgets
  22.     XREF    _std__in
  23.     XREF    _std__out
  24.     XREF    _std__err
  25.     XREF    _ClassList
  26.     XREF    _ins_every
  27.     XREF    _ins_header
  28.     XREF    _ins_code
  29.     XREF    _ins_initcl
  30.     XREF    _Prefs
  31.  
  32.     SECTION ":0",CODE
  33.  
  34.  
  35.     XDEF    _INIT_8_ParseFile_cpp
  36. _INIT_8_ParseFile_cpp
  37. L49    EQU    0
  38.     link    a5,#L49
  39. L48
  40.     move.l    a4,a0
  41. ;static const unsigned char ParseTab[ 130 ] = {
  42.     lea    _ParseTab(a4),a0
  43.     add.w    #$81,a0
  44.     unlk    a5
  45.     rts
  46.  
  47. ;short ParseFile::Open( char *name, short force, short scanonly )
  48.     XDEF    Open__ParseFile__TPcss
  49. Open__ParseFile__TPcss
  50. L80    EQU    -$20E
  51.     link    a5,#L80
  52.     movem.l    d2/d3/a2,-(a7)
  53.     move.w    $12(a5),d2
  54.     move.w    $10(a5),d3
  55. L57
  56.     move.l    a4,a0
  57. ;    created = 0;
  58.     move.l    $8(a5),a0
  59.     clr.w    $10(a0)
  60. ;    fh = fopen( name, "r" );
  61.     move.l    #L50,-(a7)
  62.     move.l    $C(a5),-(a7)
  63.     jsr    _fopen
  64.     addq.w    #$8,a7
  65.     move.l    $8(a5),a1
  66.     move.l    d0,(a1)
  67. ;    if( !fh ) 
  68.     move.l    $8(a5),a0
  69.     move.l    (a0),a0
  70.     cmp.w    #0,a0
  71.     bne.b    L59
  72. L58
  73. ;    if( !fh ) printf( "Fail to open %s\n", name );
  74.     move.l    $C(a5),-(a7)
  75.     move.l    #L51,-(a7)
  76.     jsr    _printf
  77.     addq.w    #$8,a7
  78. L59
  79. ;    if( fh ) 
  80.     move.l    $8(a5),a0
  81.     move.l    (a0),a0
  82.     cmp.w    #0,a0
  83.     beq    L79
  84. L60
  85. ;    if( fh ) 
  86. ;        strcpy( fname, name );
  87.     move.l    $C(a5),-(a7)
  88.     move.l    $8(a5),a1
  89.     lea    $16(a1),a0
  90.     move.l    a0,-(a7)
  91.     jsr    _strcpy
  92.     addq.w    #$8,a7
  93. ;        strcpy( sfname, name );
  94.     move.l    $C(a5),-(a7)
  95.     move.l    $8(a5),a1
  96.     lea    $52(a1),a0
  97.     move.l    a0,-(a7)
  98.     jsr    _strcpy
  99.     addq.w    #$8,a7
  100. ;        for( p = sfname + strlen( sfname ) -1 ;
  101.     move.l    $8(a5),a0
  102.     lea    $52(a0),a2
  103.     move.l    $8(a5),a1
  104.     lea    $52(a1),a0
  105.     move.l    a0,-(a7)
  106.     jsr    _strlen
  107.     addq.w    #4,a7
  108.     add.l    d0,a2
  109.     subq.w    #1,a2
  110.     move.l    a2,a1
  111.     bra.b    L62
  112. L61
  113.     move.l    a1,a0
  114.     subq.w    #1,a1
  115. L62
  116.     move.l    $8(a5),a2
  117.     lea    $52(a2),a0
  118.     cmp.l    a0,a1
  119.     blo.b    L64
  120. L63
  121.     move.b    (a1),d0
  122.     cmp.b    #$2E,d0
  123.     bne.b    L61
  124. L64
  125. ;        if( p != sfname ) 
  126.     move.l    $8(a5),a2
  127.     lea    $52(a2),a0
  128.     cmp.l    a0,a1
  129.     beq.b    L66
  130. L65
  131. ;        if( p != sfname ) *p = 0;
  132.     clr.b    (a1)
  133. L66
  134. ;        strcpy( ofname, sfname );
  135.     move.l    $8(a5),a1
  136.     lea    $52(a1),a0
  137.     move.l    a0,-(a7)
  138.     move.l    $8(a5),a1
  139.     lea    $34(a1),a0
  140.     move.l    a0,-(a7)
  141.     jsr    _strcpy
  142.     addq.w    #$8,a7
  143. ;        a = strlen( ofname );
  144.     move.l    $8(a5),a1
  145.     lea    $34(a1),a0
  146.     move.l    a0,-(a7)
  147.     jsr    _strlen
  148.     addq.w    #4,a7
  149. ;        ofname[ a ] = '.';
  150.     move.l    $8(a5),a1
  151.     lea    $34(a1),a0
  152.     move.w    d0,d1
  153.     ext.l    d1
  154.     add.l    d1,a0
  155.     move.b    #$2E,(a0)
  156. ;        strcpy( ofname + a + 1, sfname + a + 2 );
  157.     move.l    $8(a5),a1
  158.     lea    $52(a1),a0
  159.     move.w    d0,d1
  160.     ext.l    d1
  161.     add.l    d1,a0
  162.     addq.w    #2,a0
  163.     move.l    a0,-(a7)
  164.     move.l    $8(a5),a1
  165.     lea    $34(a1),a0
  166.     ext.l    d0
  167.     add.l    d0,a0
  168.     addq.w    #1,a0
  169.     move.l    a0,-(a7)
  170.     jsr    _strcpy
  171.     addq.w    #$8,a7
  172. ;        if( !Prefs.forcetrans && ((!force && vf.isValid( name, ofname ))
  173.     lea    _Prefs(a4),a0
  174.     move.w    $20(a0),d0
  175.     bne.b    L73
  176. L67
  177.     tst.w    d3
  178.     bne.b    L69
  179. L68
  180.     move.l    $8(a5),a1
  181.     lea    $34(a1),a0
  182.     move.l    a0,-(a7)
  183.     move.l    $C(a5),-(a7)
  184.     lea    -$20E(a5),a0
  185.     move.l    a0,-(a7)
  186.     jsr    isValid__ValidFile__TPcPc
  187.     add.w    #$C,a7
  188.     tst.w    d0
  189.     bne.b    L70
  190. L69
  191.     tst.w    d2
  192.     beq.b    L73
  193. L70
  194. ;orce && vf.isVali
  195. ;            strcpy( ofname, "NIL:" );
  196.     move.l    #L52,-(a7)
  197.     move.l    $8(a5),a1
  198.     lea    $34(a1),a0
  199.     move.l    a0,-(a7)
  200.     jsr    _strcpy
  201.     addq.w    #$8,a7
  202. ;            if( Prefs.verbose ) 
  203.     lea    _Prefs(a4),a0
  204.     move.w    $1C(a0),d0
  205.     beq.b    L76
  206. L71
  207. ;            if( Prefs.verbose ) printf( "Scanning \"%s
  208.     move.l    $C(a5),-(a7)
  209.     move.l    #L53,-(a7)
  210.     jsr    _printf
  211.     addq.w    #$8,a7
  212. L72
  213.     bra.b    L76
  214. L73
  215. ; else 
  216. ;            if( Prefs.verbose ) 
  217.     lea    _Prefs(a4),a0
  218.     move.w    $1C(a0),d0
  219.     beq.b    L75
  220. L74
  221. ;            if( Prefs.verbose ) printf( "Translating \
  222.     move.l    $8(a5),a1
  223.     lea    $34(a1),a0
  224.     move.l    a0,-(a7)
  225.     move.l    $C(a5),-(a7)
  226.     move.l    #L54,-(a7)
  227.     jsr    _printf
  228.     add.w    #$C,a7
  229. L75
  230. ;            created = 1;
  231.     move.l    $8(a5),a0
  232.     move.w    #1,$10(a0)
  233. L76
  234. ;        if( !(ofh = fopen( ofname, "w" )) ) 
  235.     move.l    #L55,-(a7)
  236.     move.l    $8(a5),a1
  237.     lea    $34(a1),a0
  238.     move.l    a0,-(a7)
  239.     jsr    _fopen
  240.     addq.w    #$8,a7
  241.     move.l    $8(a5),a1
  242.     move.l    d0,$12(a1)
  243.     bne.b    L78
  244. L77
  245. ;        if( !(ofh = fopen( ofname, "
  246. ;            printf( "Can not open output file\n" );
  247.     move.l    #L56,-(a7)
  248.     jsr    _printf
  249.     addq.w    #4,a7
  250. ;            Close();
  251.     move.l    $8(a5),-(a7)
  252.     jsr    Close__ParseFile__T
  253.     addq.w    #4,a7
  254. ;            return 0;
  255.     moveq    #0,d0
  256.     movem.l    (a7)+,d2/d3/a2
  257.     unlk    a5
  258.     rts
  259. L78
  260. ;        TokStart = TokLen = 0;
  261.     move.l    $8(a5),a0
  262.     clr.w    $D6(a0)
  263.     move.l    $8(a5),a0
  264.     clr.w    $D4(a0)
  265. ;        LineBuf[0] = 0;
  266.     move.l    $8(a5),a1
  267.     lea    $DA(a1),a0
  268.     lea    (a0),a0
  269.     clr.b    (a0)
  270. ;        LineN = 0;
  271.     move.l    $8(a5),a0
  272.     clr.l    4(a0)
  273. ;        SBracket = CBracket = MBracket = 0;
  274.     move.l    $8(a5),a0
  275.     clr.w    $4DC(a0)
  276.     move.l    $8(a5),a0
  277.     clr.w    $4DE(a0)
  278.     move.l    $8(a5),a0
  279.     clr.w    $4E0(a0)
  280. ;        comment = 0;
  281.     move.l    $8(a5),a0
  282.     clr.w    $C(a0)
  283. ;        ErrorBuf = 0;
  284.     move.l    $8(a5),a0
  285.     clr.w    $E(a0)
  286. ;        copy = 1;
  287.     move.l    $8(a5),a0
  288.     move.w    #1,$8(a0)
  289. ; startcopy = 0;
  290.     move.l    $8(a5),a0
  291.     clr.w    $A(a0)
  292. ;        return 1;
  293.     moveq    #1,d0
  294.     movem.l    (a7)+,d2/d3/a2
  295.     unlk    a5
  296.     rts
  297. L79
  298. ;    return 0;
  299.     moveq    #0,d0
  300.     movem.l    (a7)+,d2/d3/a2
  301.     unlk    a5
  302.     rts
  303.  
  304. ;void ParseFile::Close( void )
  305.     XDEF    Close__ParseFile__T
  306. Close__ParseFile__T
  307. L86    EQU    0
  308.     link    a5,#L86
  309.     movem.l    a2,-(a7)
  310.     move.l    $8(a5),a2
  311. L81
  312.     move.l    a4,a0
  313. ;    if( fh ) 
  314.     move.l    a2,a0
  315.     move.l    (a0),a0
  316.     cmp.w    #0,a0
  317.     beq.b    L83
  318. L82
  319. ;    if( fh ) 
  320. ;        fclose( fh );
  321.     move.l    a2,a0
  322.     move.l    (a0),a0
  323.     move.l    a0,-(a7)
  324.     jsr    _fclose
  325.     addq.w    #4,a7
  326. ;        fh = 0;
  327.     clr.l    (a2)
  328. L83
  329. ;    if( ofh ) 
  330.     move.l    a2,a0
  331.     move.l    $12(a0),a0
  332.     cmp.w    #0,a0
  333.     beq.b    L85
  334. L84
  335. ;    if( ofh ) 
  336. ;        fclose( ofh );
  337.     move.l    a2,a0
  338.     move.l    $12(a0),a0
  339.     move.l    a0,-(a7)
  340.     jsr    _fclose
  341.     addq.w    #4,a7
  342. ;        ofh = 0;
  343.     clr.l    $12(a2)
  344. L85
  345.     movem.l    (a7)+,a2
  346.     unlk    a5
  347.     rts
  348.  
  349. ;ParseFile::~ParseFile()
  350.     XDEF    _0dt__ParseFile__T
  351. _0dt__ParseFile__T
  352. L88    EQU    0
  353.     link    a5,#L88
  354.     move.l    $8(a5),a1
  355. L87
  356.     move.l    a4,a0
  357. ;    Close();
  358.     move.l    a1,-(a7)
  359.     jsr    Close__ParseFile__T
  360.     addq.w    #4,a7
  361.     unlk    a5
  362.     rts
  363.  
  364. ;ParseFile::ParseFile( void )
  365.     XDEF    _0ct__ParseFile__T
  366. _0ct__ParseFile__T
  367. L90    EQU    0
  368.     link    a5,#L90
  369.     move.l    $8(a5),a1
  370. L89
  371.     move.l    a4,a0
  372. ;    fh = ofh = 0;
  373.     clr.l    $12(a1)
  374.     clr.l    (a1)
  375.     unlk    a5
  376.     rts
  377.  
  378. ;void ParseFile::GetToken( void )
  379.     XDEF    GetToken__ParseFile__T
  380. GetToken__ParseFile__T
  381. L152    EQU    -$A
  382.     link    a5,#L152
  383.     movem.l    d2/a2,-(a7)
  384.     move.l    $8(a5),a2
  385. L92
  386.     move.l    a4,a0
  387. ;    if( TokLen ) 
  388.     move.l    a2,a0
  389.     move.w    $D6(a0),d0
  390.     beq.b    L94
  391. L93
  392. ;    if( TokLen ) 
  393. ;        memcpy( PrevTok, Tok, TokLen );
  394.     move.l    a2,a0
  395.     move.w    $D6(a0),d0
  396.     ext.l    d0
  397.     move.l    d0,-(a7)
  398.     lea    $DA(a2),a0
  399.     move.l    a2,a1
  400.     move.w    $D4(a1),d0
  401.     ext.l    d0
  402.     add.l    d0,a0
  403.     move.l    a0,-(a7)
  404.     lea    $70(a2),a0
  405.     move.l    a0,-(a7)
  406.     jsr    _memcpy
  407.     add.w    #$C,a7
  408. ;        PrevTok[TokLen] = 0;
  409.     lea    $70(a2),a0
  410.     move.l    a2,a1
  411.     move.w    $D6(a1),d0
  412.     ext.l    d0
  413.     add.l    d0,a0
  414.     clr.b    (a0)
  415. ;        PrevType = TokType;
  416.     move.l    a2,a0
  417.     move.b    $D8(a0),d0
  418.     move.b    d0,$D9(a2)
  419.     bra.b    L96
  420. L94
  421. ; else PrevTok[0] = 0;
  422.     lea    $70(a2),a0
  423.     lea    (a0),a0
  424.     clr.b    (a0)
  425. L95
  426. L96
  427. ;    if( copy ) 
  428.     move.l    a2,a0
  429.     move.w    $8(a0),d0
  430.     beq.b    L102
  431. L97
  432. ;    if( copy ) 
  433. ;        if( TokLen ) 
  434.     move.l    a2,a0
  435.     move.w    $D6(a0),d0
  436.     beq.b    L102
  437. L98
  438. ;        if( TokLen ) 
  439. ;            if( fwrite( Tok, 1, TokLen, ofh ) != TokLen ) 
  440.     move.l    a2,a0
  441.     move.l    $12(a0),a0
  442.     move.l    a0,-(a7)
  443.     move.l    a2,a0
  444.     move.w    $D6(a0),d0
  445.     ext.l    d0
  446.     move.l    d0,-(a7)
  447.     pea    1.w
  448.     lea    $DA(a2),a0
  449.     move.l    a2,a1
  450.     move.w    $D4(a1),d0
  451.     ext.l    d0
  452.     add.l    d0,a0
  453.     move.l    a0,-(a7)
  454.     jsr    _fwrite
  455.     add.w    #$10,a7
  456.     move.l    a2,a0
  457.     move.w    $D6(a0),d1
  458.     ext.l    d1
  459.     cmp.l    d1,d0
  460.     beq.b    L102
  461. L99
  462. ;            if( fwrite( Tok,
  463. ;                printf( "IO Error\n" );
  464.     move.l    #L91,-(a7)
  465.     jsr    _printf
  466.     addq.w    #4,a7
  467. L100
  468. L101
  469. L102
  470. ;    if( startcopy ) 
  471.     move.l    a2,a0
  472.     move.w    $A(a0),d0
  473.     beq.b    L104
  474. L103
  475. ;    if( startcopy ) 
  476. ; copy = 1;
  477.     move.w    #1,$8(a2)
  478. ; startcopy = 0;
  479.     clr.w    $A(a2)
  480. L104
  481. ;    TokStart += TokLen;
  482.     move.l    a2,a0
  483.     move.w    $D6(a0),d0
  484.     move.w    $D4(a2),d1
  485.     add.w    d0,d1
  486.     move.w    d1,$D4(a2)
  487. ;    TokLen = 0;
  488.     clr.w    $D6(a2)
  489. ;    if( !LineBuf[ TokStart ] ) 
  490.     lea    $DA(a2),a0
  491.     move.l    a2,a1
  492.     move.w    $D4(a1),d0
  493.     ext.l    d0
  494.     add.l    d0,a0
  495.     move.b    (a0),d0
  496.     bne.b    L108
  497. L105
  498. ;    if( !LineBuf[ TokStart ] ) 
  499. ;        if( !fgets( LineBuf, MAXLINE, fh ) ) 
  500.     move.l    a2,a0
  501.     move.l    (a0),a0
  502.     move.l    a0,-(a7)
  503.     pea    $400.w
  504.     lea    $DA(a2),a0
  505.     move.l    a0,-(a7)
  506.     jsr    _fgets
  507.     add.w    #$C,a7
  508.     tst.l    d0
  509.     bne.b    L107
  510. L106
  511. ;        if( !fgets( LineBuf, MAXLIN
  512.     movem.l    (a7)+,d2/a2
  513.     unlk    a5
  514.     rts
  515. L107
  516. ;        LineN++;
  517.     move.l    4(a2),d0
  518.     addq.l    #1,d0
  519.     move.l    d0,4(a2)
  520. ;        TokStart = 0;
  521.     clr.w    $D4(a2)
  522. L108
  523. ;    p = ps = LineBuf + TokStart;
  524.     lea    $DA(a2),a0
  525.     move.l    a2,a1
  526.     move.w    $D4(a1),d0
  527.     ext.l    d0
  528.     add.l    d0,a0
  529.     move.l    a0,-$8(a5)
  530.     move.l    -$8(a5),a1
  531. ;    TokType = ParseTab[ *p ];
  532.     lea    _ParseTab(a4),a0
  533.     move.b    (a1),d0
  534.     extb.l    d0
  535.     add.l    d0,a0
  536.     move.b    (a0),d0
  537.     move.b    d0,$D8(a2)
  538. ;    char prevch = 0;
  539.     moveq    #0,d2
  540. ;    if( *p == '"' && !comment ) 
  541.     move.b    (a1),d0
  542.     cmp.b    #$22,d0
  543.     bne    L134
  544. L109
  545.     move.l    a2,a0
  546.     move.w    $C(a0),d0
  547.     bne    L134
  548. L110
  549. ;    if( *p == '"' && !comment ) 
  550. ;        while( 1 ) 
  551. L111
  552. ;        while( 1 ) 
  553. ;            p++;
  554.     move.l    a1,a0
  555.     addq.w    #1,a1
  556. ;            if( *p == '"' && *(p-1) != '\\' ) 
  557.     move.b    (a1),d0
  558.     cmp.b    #$22,d0
  559.     bne.b    L114
  560. L112
  561.     lea    -1(a1),a0
  562.     move.b    (a0),d0
  563.     cmp.b    #$5C,d0
  564.     beq.b    L114
  565. L113
  566. ;            if( *p == '"' && *(p-1) != '
  567. ; p++;
  568.     move.l    a1,a0
  569.     addq.w    #1,a1
  570.     bra    L138
  571. L114
  572. ;            if( !*p ) 
  573.     move.b    (a1),d0
  574.     bne.b    L111
  575. L115
  576. ;            if( !*p ) 
  577.     bra    L138
  578. L116
  579. L117
  580.     bra.b    L111
  581. L118
  582.     bra    L138
  583. L119
  584. ;    while( ParseTab[ *p ] == TokType && *p ) 
  585.     bra    L134
  586. L120
  587. ;    while( ParseTab[ *p ] == 
  588. ;        if( TokType == CNT ) 
  589.     move.l    a2,a0
  590.     move.b    $D8(a0),d0
  591.     cmp.b    #$20,d0
  592.     bne.b    L131
  593. L121
  594. ;        if( TokType == CNT ) 
  595. ;            if( prevch == '/' ) 
  596.     cmp.b    #$2F,d2
  597.     bne.b    L127
  598. L122
  599. ;            if( prevch == '/' ) 
  600. ;                if( *p == '*' ) 
  601.     move.b    (a1),d0
  602.     cmp.b    #$2A,d0
  603.     bne.b    L124
  604. L123
  605. ;                if( *p == '*' ) comment++;
  606.     move.w    $C(a2),d0
  607.     addq.w    #1,d0
  608.     move.w    d0,$C(a2)
  609. L124
  610. ;                if( *p == '/' ) 
  611.     move.b    (a1),d0
  612.     cmp.b    #$2F,d0
  613.     bne.b    L127
  614. L125
  615. ;                if( *p == '/' ) 
  616. ;                    TokLen = 0;
  617.     clr.w    $D6(a2)
  618. ;                    TokStart = strlen( LineBuf );
  619.     lea    $DA(a2),a0
  620.     move.l    a0,-(a7)
  621.     jsr    _strlen
  622.     addq.w    #4,a7
  623.     move.w    d0,$D4(a2)
  624. ;                    goto 
  625.     bra    L96
  626. L126
  627. L127
  628. ;            if( prevch == '*' && *p == '/' ) 
  629.     cmp.b    #$2A,d2
  630.     bne.b    L130
  631. L128
  632.     move.b    (a1),d0
  633.     cmp.b    #$2F,d0
  634.     bne.b    L130
  635. L129
  636. ;            if( prevch == '*' && *p == '/
  637.     move.w    $C(a2),d0
  638.     subq.w    #1,d0
  639.     move.w    d0,$C(a2)
  640. L130
  641. ;            prevch = *p;
  642.     move.b    (a1),d0
  643.     move.b    d0,d2
  644. L131
  645. ;        p++;
  646.     move.l    a1,a0
  647.     addq.w    #1,a1
  648. ;        if( ParseTab[ *p ] == BRC ) 
  649.     lea    _ParseTab(a4),a0
  650.     move.b    (a1),d0
  651.     extb.l    d0
  652.     add.l    d0,a0
  653.     move.b    (a0),d0
  654.     cmp.b    #4,d0
  655.     bne.b    L134
  656. L132
  657. ;        if( ParseTab[ *p ] == BRC ) 
  658.     bra.b    L138
  659. L133
  660. L134
  661.     lea    _ParseTab(a4),a0
  662.     move.b    (a1),d0
  663.     extb.l    d0
  664.     add.l    d0,a0
  665.     move.b    (a0),d0
  666.     move.l    a2,a0
  667.     move.b    $D8(a0),d1
  668.     cmp.b    d1,d0
  669.     bne.b    L138
  670. L135
  671.     move.b    (a1),d0
  672.     bne    L120
  673. L136
  674. L137
  675. L138
  676. ;    TokLen = (short)(p - ps);
  677.     move.l    a1,d0
  678.     sub.l    -$8(a5),d0
  679.     move.w    d0,$D6(a2)
  680. ;    if( TokType == BRC && !comment) 
  681.     move.l    a2,a0
  682.     move.b    $D8(a0),d0
  683.     cmp.b    #4,d0
  684.     bne    L148
  685. L139
  686.     move.l    a2,a0
  687.     move.w    $C(a0),d0
  688.     bne    L148
  689. L140
  690. ;    if( TokType == BRC && !comment) 
  691. ;        switch( *Tok )
  692.     lea    $DA(a2),a0
  693.     move.l    a2,a1
  694.     move.w    $D4(a1),d0
  695.     ext.l    d0
  696.     add.l    d0,a0
  697.     move.b    (a0),d0
  698.     cmp.b    #$5D,d0
  699.     beq    L146
  700.     bgt.b    L153
  701.     cmp.b    #$29,d0
  702.     beq.b    L144
  703.     bgt.b    L154
  704.     cmp.b    #$28,d0
  705.     beq.b    L143
  706.     bra    L148
  707. L154
  708.     cmp.b    #$5B,d0
  709.     beq    L145
  710.     bra    L148
  711. L153
  712.     cmp.b    #$7B,d0
  713.     beq.b    L141
  714.     cmp.b    #$7D,d0
  715.     beq.b    L142
  716.     bra    L148
  717. ;        switch( *Tok ) 
  718. ;            
  719. L141
  720. ;': MBracket++;
  721.     move.w    $4DC(a2),d0
  722.     addq.w    #1,d0
  723.     move.w    d0,$4DC(a2)
  724.     bra.b    L148
  725. L142
  726. ;': MBracket--;
  727.     move.w    $4DC(a2),d0
  728.     subq.w    #1,d0
  729.     move.w    d0,$4DC(a2)
  730.     bra.b    L148
  731. L143
  732. ;            case '(': CBracket++;
  733.     move.w    $4DE(a2),d0
  734.     addq.w    #1,d0
  735.     move.w    d0,$4DE(a2)
  736.     bra.b    L148
  737. L144
  738. ;            case ')': CBracket--;
  739.     move.w    $4DE(a2),d0
  740.     subq.w    #1,d0
  741.     move.w    d0,$4DE(a2)
  742.     bra.b    L148
  743. L145
  744. ;            case '[': SBracket++;
  745.     move.w    $4E0(a2),d0
  746.     addq.w    #1,d0
  747.     move.w    d0,$4E0(a2)
  748.     bra.b    L148
  749. L146
  750. ;            case ']': SBracket--;
  751.     move.w    $4E0(a2),d0
  752.     subq.w    #1,d0
  753.     move.w    d0,$4E0(a2)
  754. L147
  755. L148
  756. ;    if( TokType == SEP || comment ) 
  757.     move.l    a2,a0
  758.     move.b    $D8(a0),d0
  759.     cmp.b    #1,d0
  760.     beq    L96
  761. L149
  762.     move.l    a2,a0
  763.     move.w    $C(a0),d0
  764.     beq.b    L151
  765. L150
  766. ;    if( TokType == SEP || comment ) go
  767.     bra    L96
  768. L151
  769.     movem.l    (a7)+,d2/a2
  770.     unlk    a5
  771.     rts
  772.  
  773. ;void ParseFile::StartCopy( void )
  774.     XDEF    StartCopy__ParseFile__T
  775. StartCopy__ParseFile__T
  776. L156    EQU    0
  777.     link    a5,#L156
  778.     move.l    $8(a5),a1
  779. L155
  780.     move.l    a4,a0
  781. ;    startcopy = 1;
  782.     move.w    #1,$A(a1)
  783.     unlk    a5
  784.     rts
  785.  
  786. ;void ParseFile::StopCopy( void )
  787.     XDEF    StopCopy__ParseFile__T
  788. StopCopy__ParseFile__T
  789. L158    EQU    0
  790.     link    a5,#L158
  791.     move.l    $8(a5),a1
  792. L157
  793.     move.l    a4,a0
  794. ;    copy = 0;
  795.     clr.w    $8(a1)
  796.     unlk    a5
  797.     rts
  798.  
  799. L56
  800.     dc.b    'Can not open output file',$A,0
  801. L51
  802.     dc.b    'Fail to open %s',$A,0
  803. L91
  804.     dc.b    'IO Error',$A,0
  805. L52
  806.     dc.b    'NIL:',0
  807. L53
  808.     dc.b    'Scanning "%s"',$A,0
  809. L54
  810.     dc.b    'Translating "%s" into "%s"',$A,0
  811. L50
  812.     dc.b    'r',0
  813. L55
  814.     dc.b    'w',0
  815.  
  816.     SECTION ":1",DATA
  817.  
  818. _ParseTab
  819.     dc.b    0,0,0,0,0,0,0,0
  820.     dc.b    0,1,1,0,0,0,0,0
  821.     dc.b    0,0,0,0,0,0,0,0
  822.     dc.b    0,0,0,0,0,0,0,0
  823.     dc.b    1,0,2,0,0,0,0,0
  824.     dc.b    4,4,$20,$10,$10,$10,$10,$20
  825.     dc.b    2,2,2,2,2,2,2,2
  826.     dc.b    2,2,$10,$10,$10,$10,$10,0
  827.     dc.b    0,2,2,2,2,2,2,2
  828.     dc.b    2,2,2,2,2,2,2,2
  829.     dc.b    2,2,2,2,2,2,2,2
  830.     dc.b    2,2,2,4,0,4,0,2
  831.     dc.b    0,2,2,2,2,2,2,2
  832.     dc.b    2,2,2,2,2,2,2,2
  833.     dc.b    2,2,2,2,2,2,2,2
  834.     dc.b    2,2,2,4,0,4,2,0
  835.     dc.b    0,0
  836.  
  837.     END
  838.